import 'dart:convert';

import 'package:elephant_fish/http/core/hi_net.dart';
import 'package:elephant_fish/http/request/base_request.dart';
import 'package:elephant_fish/http/request/user_info_request.dart';
import 'package:elephant_fish/http/request/user_privacy_request.dart';
import 'package:elephant_fish/model/user_info_entity.dart';
import 'package:elephant_fish/util/TxUtils.dart';
import 'package:elephant_fish/util/size_util.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';

import 'login_page.dart';

class SettingPrivacyPage extends StatefulWidget {

  const SettingPrivacyPage({Key key}) : super(key: key);

  @override
  _SettingPrivacyPageState createState() => _SettingPrivacyPageState();
}

class _SettingPrivacyPageState extends State<SettingPrivacyPage> {

  var _dropValue = 1;
  UserInfoEntity userInfoEntity;

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    getInitInfo();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Color(0xff140c3d),
      appBar: AppBar(
        backgroundColor: Color(0xff140c3d),
        centerTitle: true,
        leading: GestureDetector(
          child: Icon(
            Icons.arrow_back_ios,
            size: SizeUtil.px(32),
            color: Color(0xfff3f3f3),
          ),
          onTap: () {
            Navigator.pop(context);
          },
        ),
        title: Text(
          '隐私',
          style: TextStyle(fontSize: SizeUtil.px(32), color: Color(0xfff5f5f5)),
        ),
      ),
      body: Column(
        children: [
          Container(
            height: 40,
            color: Color(0xff2b244d),
            child:  Row(children: [
              SizedBox(width: 16,),
              Text('个人主页显示',style: TextStyle(color: Color(0xfff3f3f3),fontSize: 16),),
              SizedBox(width: 140,),
              DropdownButton(
                value: _dropValue,
                items: [
                  DropdownMenuItem(child: Text('全部可见',style: TextStyle(),),value: 1,),
                  DropdownMenuItem(child: Text('仅关注可见',style: TextStyle()),value: 2),
                  DropdownMenuItem(child: Text('仅自己可见',style: TextStyle()),value: 3)

                ],style: TextStyle(color: Colors.grey),focusColor:Color(0xff140c3d),underline: Container(),onChanged: (value){
                setState(() {
                  _dropValue = value;
                  setUserPrivacy();
                });
              },)
            ],),
          ),
          SizedBox(
            height: SizeUtil.px(58),
          ),
          Align(
            alignment: Alignment.topCenter,
            child: Text(
              '隐私政策',
              style: TextStyle(
                  fontSize: SizeUtil.px(45), color: Color(0xffff215d)),
            ),
          ),
          SizedBox(
            height: SizeUtil.px(15),
          ),
          Divider(
            color: Color(0xff707070),
            height: SizeUtil.px(1),
            indent: SizeUtil.px(16),
            endIndent: SizeUtil.px(16),
          ),
          SizedBox(
            height: SizeUtil.px(30),
          ),
          Align(
              alignment: Alignment.topCenter,
              child: Container(
                  width: SizeUtil.px(686),
                  child: RichText(
                      text: TextSpan(
                        style: TextStyle(fontSize: SizeUtil.px(21),color: Color(0xfff5f5f5)),
                      text:
                      '本《隐私政策》（简称“本政策”）仅适用于XXX有限公司（以下简称“象鱼”）的象鱼视频直播平台或服务（以下简称“平台”），包括象鱼网站和象鱼移动应用，不适用于有单独的隐私权政策且未纳入本政策的第三方产品或服务。您使用青鸾的平台时，象鱼将于您同意本政策及《象鱼服务协议》后，按照本政策收集、使用、存储、传输、转让（如适用）及对外提供您的个人信息。同时，象鱼会通过本政策向您说明，象鱼如何为您提供访问、更新、管理和保护您的个人信息的服务。本政策与您使用象鱼的平台关系紧密，象鱼建议您仔细阅读并理解本政策全部内容，做出您认为适当的选择。如果您未明示同意本政策并开始使用，象鱼将仅收集维持直播及音视频浏览推荐所必需的信息，这将导致象鱼无法为您提供完整的平台和服务。象鱼努力用通俗易懂、简明扼要的文字表达，并对本政策中与您的权益存在重大关系的条款，采用粗体字进行标注以提示您注意。请您在使用象鱼的平台前仔细阅读本政策，确保对其内容特别是加粗内容的含义及相应法律后果已全部知晓并充分理解。您勾选或点击“同意”即视为您接受本政策；您同意本政策在您使用平台的整个过程中均有效。如果您有任何疑问、意见或建议，请通过以下任意一种方式与象鱼取得联系：',
                      children: [
                      TextSpan(
                          text:
                          '\n1.电子邮箱：qingluankefu@163.com；\n'
                              '2.客服热线：02365183007（服务时间：9：00-24：00）；\n'
                              '3.在线客服；本政策将帮助您了解以下内容：\n'
                              '\n'
                              '\n'
                              '一、象鱼如何收集和使用个人信息\n'
                              '二、象鱼如何使用Cookie、同类技术和SDK技术\n'
                              '三、象鱼如何共享、转让、公开披露个人信息\n'
                              '四、象鱼如何保护个人信息五、您的权利\n'
                              '五、您的权利\n'
                      )
                    ],
                  )))),
          SizedBox(
            height: SizeUtil.px(30),
          ),

        ],
      ),
    );
  }

  setUserPrivacy() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    String appToken = prefs.getString('app-token');
    BaseRequest request = UserPrivacyRequest();
    request.add('status', _dropValue).addHeader('usertoken', appToken);
    var result = await HiNet.getInstance().fire(request);
    if (result['code'] == -1) {
      TxUtils.showErrorToast('登录失效，请重新登录', context);
      Navigator.pop(context);
      Navigator.of(context).push(MaterialPageRoute(
        builder: (context) {
          return LoginPage(
            arguments: {'loginCode': '-1'},
          );
        },
      ));
    }else if(result['code'] == 0){
      TxUtils.showErrorToast(result['data'], context);
    }


  }

  Future<void> getInitInfo() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    String appToken = prefs.getString('app-token');
    BaseRequest request = UserInfoRequest();
    request.add('type', 2).addHeader('usertoken', appToken);
    var result = await HiNet.getInstance().fire(request);
    if (result['code'] == -1) {
      TxUtils.showErrorToast('登录失效，请重新登录', context);
      Navigator.pop(context);
      Navigator.of(context).push(MaterialPageRoute(
        builder: (context) {
          return LoginPage(
            arguments: {'loginCode': '-1'},
          );
        },
      ));
    }
    setState(() {
      userInfoEntity = UserInfoEntity.fromJson(
          new Map<String, dynamic>.from(result['data']));
      prefs.setString('USERINFO', jsonEncode(userInfoEntity));
      _dropValue = userInfoEntity.privacy;
    });
  }
}
